package com.jingbian.cppccbackend.service.admin;

import com.jingbian.cppccbackend.entity.Meetings;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jingbian.cppccbackend.entity.Users;
import com.jingbian.cppccbackend.entity.dto.AddMeetingDTO;
import com.jingbian.cppccbackend.entity.dto.UpdateMeetingDTO;
import com.jingbian.cppccbackend.entity.vo.MeetingDetailVO;
import com.jingbian.cppccbackend.entity.vo.PageVO;


import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 会议表，用于存储会议基本信息 服务类
 * </p>
 *
 * @author yezi
 * @since 2025-02-26
 */
public interface MeetingsService extends IService<Meetings> {

    // 获取未结束的会议/签到数据
    PageVO<Meetings> getMeetings(Integer pageNum, Integer pageSize, String sortType, 
            String startDate, String endDate, String searchText, String status, Boolean isMeeting);

    // 获取已结束的会议/签到数据
    PageVO<Meetings> getEndedMeetings(Integer pageNum, Integer pageSize, String sortType, 
            String startDate, String endDate, String searchText, String status, Boolean isMeeting);

    // 获取会议/签到列表数据（用于导出）
    List<Meetings> getMeetingsList(String sortType, String startDate, String endDate, 
            String searchText, String status, Boolean isMeeting);
    
    // 获取会议/签到详情
    MeetingDetailVO getMeetingDetail(Integer mid);

    List<Users> getParticipants(String identity, String region, String affiliation, String searchText);

    // 新增会议/签到
    boolean addMeeting(AddMeetingDTO meetingDTO);

    /**
     * 修改会议信息
     * @param updateMeetingDTO 会议修改信息
     * @return 是否修改成功
     */
    boolean updateMeeting(UpdateMeetingDTO updateMeetingDTO);

    // 获取会议统计数据
    Map<String, Object> getMeetingStatistics();

    // 获取会议发布趋势数据
    List<Map<String, Object>> getMeetingTrend(String startDate, String endDate);

    // 导出会议变化趋势数据
    byte[] exportTrendData(String startDate, String endDate) throws IOException;
}
